package com.mindskip.xzs.domain.enums;
//表示试卷类型的枚举值，包括固定试卷、时段试卷和任务试卷。
//表示试卷类型
//`ExamPaperTypeEnum` 枚举类用于表示试卷的类型，通过枚举值来区分不同类型的试卷，如固定试卷、时段试卷和任务试卷。
//存储类型信息
// 每个枚举值包含一个 `code` 和 `name`，代表试卷类型的编码和名称，方便在程序中引用和显示。
//提供方法
//`getCode()` 和 `getName()` 方法用于获取枚举值的 `code` 和 `name`。
//`fromCode(Integer code)` 方法通过给定的 `code` 返回相应的枚举值。
//静态 Map 存储映射关系
// 在静态代码块中初始化了一个 `keyMap`，用于将枚举值的 `code` 与枚举值本身进行映射，以便根据 `code` 查找对应的枚举值。

import java.util.HashMap;
import java.util.Map;

// 定义试卷类型枚举类 ExamPaperTypeEnum
public enum ExamPaperTypeEnum {

    // 枚举值 Fixed，表示固定试卷，code为1，name为"固定试卷"
    Fixed(1, "固定试卷"),

    // 枚举值 TimeLimit，表示时段试卷，code为4，name为"时段试卷"
    TimeLimit(4, "时段试卷"),

    // 枚举值 Task，表示任务试卷，code为6，name为"任务试卷"
    Task(6, "任务试卷");

    int code; // 枚举值的 code 属性
    String name; // 枚举值的 name 属性

    // 枚举值的构造函数，传入 code 和 name 初始化枚举值
    ExamPaperTypeEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    // 存储枚举值与其 code 的映射关系的静态 Map
    private static final Map<Integer, ExamPaperTypeEnum> keyMap = new HashMap<>();

    // 在静态代码块中初始化 keyMap，将每个枚举值的 code 和枚举值本身存入 Map 中
    static {
        for (ExamPaperTypeEnum item : ExamPaperTypeEnum.values()) {
            keyMap.put(item.getCode(), item);
        }
    }

    // 根据给定的 code 返回相应的枚举值，如果 code 不存在对应的枚举值，则返回 null
    public static ExamPaperTypeEnum fromCode(Integer code) {
        return keyMap.get(code);
    }

    // 获取枚举值的 code
    public int getCode() {
        return code;
    }

    // 设置枚举值的 code
    public void setCode(int code) {
        this.code = code;
    }

    // 获取枚举值的 name
    public String getName() {
        return name;
    }

    // 设置枚举值的 name
    public void setName(String name) {
        this.name = name;
    }

}
